package cn.koala.key.firstmaintain.service;

import cn.koala.key.firstmaintain.entity.dto.FirstMaintainCardBorrowOrderCancelDTO;
import cn.koala.key.firstmaintain.entity.dto.FirstMaintainCardBorrowOrderOutDTO;
import cn.koala.key.firstmaintain.entity.dto.FirstMaintainCardBorrowOrderRefuseDTO;
import cn.koala.key.firstmaintain.entity.dto.FirstMaintainCardBorrowOrderSearchParamVO;
import cn.koala.key.firstmaintain.entity.vo.FirstMaintainCardBorrowOrderDetailVO;
import cn.koala.key.firstmaintain.entity.vo.FirstMaintainCardBorrowOrderFillOrderInfoVO;
import cn.koala.key.firstmaintain.entity.vo.FirstMaintainCardBorrowOrderSearchResultVO;
import cn.seed.common.core.Result;
import cn.seed.common.core.ResultList;

/**
 * 首保卡借用单
 *
 * @author liutao
 * @date 2021/1/29
 */
public interface FirstMaintainCardBorrowOrderService {

    /**
     * 考拉借出借用单
     *
     * @param borrowOrderOutDTO   寄出信息
     */
    Result<?> borrowOut(FirstMaintainCardBorrowOrderOutDTO borrowOrderOutDTO);


    /**
     * 确认收到首保卡
     *
     * @param orderNo 借用单号
     * @param oprNo   操作人
     * @param oprName 操作人姓名
     */
    Result<?> confirmReceiveCard(String orderNo, String oprNo, String oprName);

    /**
     * 拒绝借用首保卡
     *
     * @param refuseDTO 借用单号拒绝信息
     */
    Result<?> refuseOrder(FirstMaintainCardBorrowOrderRefuseDTO refuseDTO);

    /**
     * 取消借用首保卡单据
     *
     * @param cancelDTO 借用单号取消信息
     */
    Result<?> cancelOrder(FirstMaintainCardBorrowOrderCancelDTO cancelDTO);

    /**
     * 查询借用单
     *
     * @param paramVO 查询参数
     * @return 借用单列表
     */
    Result<ResultList<FirstMaintainCardBorrowOrderSearchResultVO>> searchByCondition(FirstMaintainCardBorrowOrderSearchParamVO paramVO);

    /**
     * 借用单详情界面获取信息
     *
     * @param orderNo 借用单号
     * @return 借用单
     */
    Result<FirstMaintainCardBorrowOrderDetailVO> orderDetail(String orderNo);

    /**
     * 借用单操作获取信息
     *
     * @param orderNo 借用单号
     * @return 借用单
     */
    Result<FirstMaintainCardBorrowOrderFillOrderInfoVO> fillOrderInfo(String orderNo);

}
